package demo04_Scheduled_SpringAnnotation.springpackage;

import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;

import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.Date;

/**
 * @author liujun
 * @version 1.0
 * @date 2020/10/26
 * @author—Email liujunfirst@outlook.com
 * @blogURL https://blog.csdn.net/ljfirst
 * @description
 */

@EnableScheduling
@Configuration
//@EnableAsync 实现多线程
public class Demo0401 {
    private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");

    @Scheduled(fixedRate = 5000) //通过@Scheduled声明该方法是计划任务，使用fixedRate属性每隔固定时间执行
    //@Async 实现多线程
    public void reportCurrentTime() throws InterruptedException {
        System.out.println("每隔5秒执行一次 "+dateFormat.format(new Date()));
        Thread.sleep(1000 * 10);
    }

    @Scheduled(fixedRate = 2000) //通过@Scheduled声明该方法是计划任务，使用fixedRate属性每隔固定时间执行
    //@Async 实现多线程
    public void reportCurrentTime1(){
        System.out.println("每隔2秒执行一次 "+dateFormat.format(new Date()));
    }

    @Scheduled(cron = "0 07 20 ? * *" ) //使用cron属性可按照指定时间执行，本例指的是每天20点07分执行；
    //cron是UNIX和类UNIX(Linux)系统下的定时任务
    public void fixTimeExecution(){
        System.out.println("在指定时间 "+dateFormat.format(new Date())+" 执行");
    }
}